package com.tp2.dominio;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
import java.util.Date;
import java.util.List;

import com.tp2.bo.Oferta;
import com.tp2.dao.ParserOfertas;

public class Calendario {
	
	private static Calendario calendario;
	private Collection<Oferta> ofertas;

	private Calendario(){
		
		ParserOfertas parser = new ParserOfertas("ofertasXML.xml");
		ofertas = parser.getOfertas();
		
	}
		
	public static Calendario getInstance(){
		
		if (calendario == null){
			calendario = new Calendario();
		}
		
		return calendario;
		
	}

	public List<Oferta> dameOfertasVigentes(){
		
		
		List<Oferta> ofertasVigentesHoy = new ArrayList<Oferta>();
		for(Oferta oferta: ofertas){
			if(estaVigente(oferta) && aplicaHoy(oferta) ){
					ofertasVigentesHoy.add(oferta);
			}
		}
		return ofertasVigentesHoy;
	}

	public boolean aplicaHoy( Oferta oferta) {
		
		int diaDeLaSemana = getCalendarioDeHoy().get(Calendar.DAY_OF_WEEK);
		
		if(oferta.getDiasQueAplica().size() == 0){
			return true;
		}else
			return oferta.getDiasQueAplica().contains(diaDeLaSemana);
	}

	public boolean estaVigente(Oferta oferta) {
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(oferta.getVigenciaHasta());
		return getCalendarioDeHoy().compareTo(calendar) <= 0;
	}
	
	public static Calendar getCalendarioDeHoy(){
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(new Date());
		return calendar;
	}
}